package com.third.clock.manager;

import android.text.TextUtils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.third.clock.bean.LoginEntity;
import com.third.clock.bean.NoticeEntity;
import com.third.clock.bean.ReportEntity;
import com.third.clock.bean.ResponseData;
import com.third.clock.common.Contants;
import com.third.clock.common.LogUtils;
import com.third.clock.common.MD5Utils;
import com.umeng.commonsdk.debug.E;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

/**
 * Created by Administrator on 2018/7/30 0030.
 */

public class TransformManager {


    public static ResponseData<LoginEntity> paserLogin(String json){
        ResponseData<LoginEntity> login=null;
        try{
            login= JSON.parseObject(json, new TypeReference<ResponseData<LoginEntity>>() {});
        }catch (Exception e){

        }
        return login;
    }

    public static ResponseData<String> paserString(String json){
        ResponseData<String> mDataString=null;
        try{
            mDataString= JSON.parseObject(json, new TypeReference<ResponseData<String>>() {});
        }catch (Exception e){

        }
        return mDataString;
    }

    public static ResponseData<NoticeEntity> paserNoticeEntity(String json){
        ResponseData<NoticeEntity> mDataString=null;
        try{
            mDataString= JSON.parseObject(json, new TypeReference<ResponseData<NoticeEntity>>() {});
        }catch (Exception e){

        }
        return mDataString;
    }

    public static ResponseData<List<NoticeEntity>> paserListNoticeEntity(String json){
        ResponseData<List<NoticeEntity>> mDataString=null;
        try{
            mDataString= JSON.parseObject(json, new TypeReference<ResponseData<List<NoticeEntity>>>() {});
        }catch (Exception e){

        }
        return mDataString;
    }

    public static ResponseData<List<ReportEntity>> paserListReportEntity(String json){
        ResponseData<List<ReportEntity>> mDataString=null;
        try{
            mDataString= JSON.parseObject(json, new TypeReference<ResponseData<List<ReportEntity>>>() {});
        }catch (Exception e){

        }
        return mDataString;
    }


    /**
     * 让 Map按key进行排序
     */
    public static String  sortMapByKey(Map<String, Object> map) {
         String sign="";
        if (map == null || map.isEmpty()) {
            sign=MD5Utils.parseStrToMd5L32(Contants.MD5_SECRET);
            return sign;
        }
        Map<String, Object> mTreeMap = new TreeMap<String, Object>();
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            mTreeMap.put(entry.getKey(),String.valueOf(entry.getValue()));
        }

        for (Map.Entry<String, Object> entry : mTreeMap.entrySet()) {
            LogUtils.e("sortMapByKey","sort="+entry.getKey()+" "+String.valueOf(entry.getValue()));
            if(TextUtils.isEmpty(sign)){
                sign= entry.getKey()+"="+String.valueOf(entry.getValue());
            }else{
                sign= sign+"&"+entry.getKey()+"="+String.valueOf(entry.getValue());
            }
        }
        String toSign=(sign+Contants.MD5_SECRET);
        LogUtils.e("sortMapByKey","sign="+toSign);
        return  MD5Utils.parseStrToMd5L32(toSign);
    }


    /**
     * 验证手机格式
     */
    public static boolean isMobileNO(String mobiles) {
		/*
		移动：134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
		联通：130、131、132、152、155、156、185、186
		电信：133、153、180、189、（1349卫通）
		总结起来就是第一位必定为1，第二位必定为3或5或8，其他位置的可以为0-9
		*/
        String telRegex = "[1][358]\\d{9}";//"[1]"代表第1位为数字1，"[358]"代表第二位可以为3、5、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
        if (TextUtils.isEmpty(mobiles)) return false;
        else return mobiles.matches(telRegex);
    }


    /**
     * 验证手机格式
     */
    public static boolean isPassword(String password) {

        String telRegex = "^\\d{6}$";
        if (TextUtils.isEmpty(password)) return false;
        else return password.matches(telRegex);
    }


    public static String paserLongToStringDate(String format,long time){
        String date="";
        SimpleDateFormat mSimpleDateFormat = new SimpleDateFormat(format);
        date = mSimpleDateFormat.format(new Date(time));
        return date;
    }



}
